//////////////////////////////////////////////////////////////////////////

#ifdef _DEBUG

//////////////////////////////////////////////////////////////////////////

#ifndef _MEMORYCONTROLLER_H_
#include "memorycontroller.h"
#endif

//////////////////////////////////////////////////////////////////////////

#include <assert.h>

//////////////////////////////////////////////////////////////////////////


MemoryController::AllocMemory MemoryController::m_AllocMemory;


//////////////////////////////////////////////////////////////////////////


void* MemoryController::operator new( size_t _size )
{
    void* ptr = malloc(_size);
    m_AllocMemory.m_Allocated.insert(ptr);
    return ptr;
}


//////////////////////////////////////////////////////////////////////////


void MemoryController::operator delete( void* _ptr )
{
    std::set<void*>::iterator it = m_AllocMemory.m_Allocated.find(_ptr);
    assert( it != m_AllocMemory.m_Allocated.end() );
    m_AllocMemory.m_Allocated.erase(it);
}


//////////////////////////////////////////////////////////////////////////


MemoryController::AllocMemory::~AllocMemory()
{
    assert(!m_Allocated.empty());
}


//////////////////////////////////////////////////////////////////////////

#endif

//////////////////////////////////////////////////////////////////////////
